package com.icinfo.cloud.provider.punish.vo;

import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.provider.common.enums.CertTypeEnum;
import com.icinfo.cloud.provider.punish.dto.ZtcCheckObjectContentDto;
import com.icinfo.cloud.provider.punish.enums.ZtcSourceTypeEnum;
import com.icinfo.framework.tools.utils.IDCardUtils;
import com.icinfo.framework.tools.utils.StringUtils;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 描述： 移动端-通用文书详情 试图
 *
 * @author shishengyao
 * @description
 * @date 2023/2/21
 */
@Slf4j
@Data
public class AppCaseBeforeDocumentDetailVo {


    /**
     * 文书目录编码
     */
    @NotEmpty(message = "文书目录编码不能为空")
    private String documentCatalogCode;

    /**
     * 文书内容数据map
     */
    @NotEmpty(message = "文书内容数据map不能为空")
    private Map<String, Object> dataMap;

    /**
     * 文书对象类型 1.个人  ,2.企业;
     */
    @NotBlank(message = "文件对象类型必传")
    private String documentObjectType;


    /**
     * 主办人用户id
     */
    @NotBlank(message = "主办人必传")
    private String mainHandleUserId;

    /**
     * 主办人用户名称
     */
    private String mainHandleUser;

    /**
     * 主办人机构编码
     */
    private String mainHandleOrgCode;

    /**
     * 主办人机构名称
     */
    private String mainHandleOrgName;

    /**
     * 主办人部门编码
     */
    private String mainHandleDeptCode;

    /**
     * 主办人部门名称
     */
    private String mainHandleDeptName;

    /**
     * 主办人dingId
     */
    private String mainHandleDingId;

    /**
     * 主办人手机号
     */
    private String mainHandleTel;


    /**
     * 协办人id，多个逗号分割
     */
    private String assistHandleUserId;

    /**
     * 协办人用户名称
     */
    private String assistHandleUser;

    /**
     * 协办人机构编码
     */
    private String assistHandleOrgCode;

    /**
     * 协办人机构名称
     */
    private String assistHandleOrgName;

    /**
     * 协办人部门编码
     */
    private String assistHandleDeptCode;

    /**
     * 协办人部门名称
     */
    private String assistHandleDeptName;

    /**
     * 协办人dingId
     */
    private String assistHandleDingId;

    /**
     * 协办人手机号
     */
    private String assistHandleTel;

    /**
     * 当事人企业统一社会信用代码 （统一社会信用代码）
     */
    private String unicode;

    /**
     * 当事人企业企业公司名 (单位名称)
     */
    private String entName;

    /**
     * 当事人企业法人姓名 (法定代表人/负责人名称)
     */
    private String legalName;

    /**
     * 当事人企业法人证件号码 （证件号码）
     */
    private String legalCertNo;

    /**
     * 当事人企业企业注册地址 (住所) （住址）
     */
    private String entAddress;

    /**
     * 当事人企业企业联系电话
     */
    private String entPhone;

    /**
     * 当事人企业法人职务
     */
    private String job;

    /**
     * 当事人个人姓名
     */
    private String personName;

    /**
     * 当事人个人手机号
     */
    private String personMobile;

    /**
     * 当事人个人证件号码  / 法定代表人证件号码  （证件号码）
     */
    private String personCertNo;

    /**
     * 当事人个人证件类型   / 法定代表人证件类型  （证件类型）
     */
    private String personCertType;

    /**
     * 案件id
     */
    private String caseId;

    /**
     * 当事人id
     */
    private String partyId;

/**------------缺少的字段------------------**/
    /**
     * 单位类型
     */
    private String entType;
    /**
     * 经营地址
     */
    private String businessAddress;

    /**
     * 性别 男 女
     */
    private String sex;

    /**
     * 年龄
     */
    private String age;

    /**
     * 个人工作单位
     */
    private String personWorkUnit;

    /**
     * 办案条线编码
     */
    private String lineCode;

    /**
     * 办案条线名称
     */
    private String lineName;

    /**
     * 办案条线类别编码
     */
    private String lineTypeCode;

    /**
     * 短信发送记录
     */
    private List<AppCaseSendNotifyRecordVo> sendNotifyRecordList;

    /**
     * 关联任务信息(可能后续会有多个)
     */
    private List<AssociatedTaskVo> associatedInfo;

    /**
     * 文书标准篇幅url
     */
    private String documentStandardUrl;

    /**
     * 文书标准篇幅盖章后的url
     */
    private String documentStandardUrlAfterSeal;

    /**
     * 文书标准篇幅签字后文书地址
     */
    private String documentStandardUrlAfterSign;


    /**
     * 文书地址
     */
    private String documentUrl;

    /**
     * 盖章后文书地址
     */
    private String documentUrlAfterSeal;

    /**
     * 签字后文书地址（当事人）
     */
    private String documentUrlAfterSign;

    /**
     * 文书id
     */
    private String documentId;

    /**
     * 文书创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime documentCreateTime;

    /**
     * 文书状态 "待确认" : "已确认"
     */
    private String documentStatus;

    /**
     * 文书来源
     */
    private ZtcSourceTypeEnum sourceType;

    /**
     * 检查对象与检查机构内容
     */
    private ZtcCheckObjectContentDto sourceContent;

    /**
     * 获取生日
     *
     * @return
     */
    public String getBirthday() {
        if (!CertTypeEnum.SFZ.getCode().equals(personCertType)) {
            return null;
        }
        if (StringUtils.isEmpty(personCertNo)) {
            return null;
        }
        String birthDay = null;
        try {
            birthDay = DateUtil.format(DateUtil.parse(IDCardUtils.getBirthByIdCard(personCertNo), "yyyyMMdd"), "yyyy-MM-dd");
        } catch (Exception e) {
            log.error("获取生日异常", e);
        }
        return birthDay;
    }

}
